package LeetCode.LinkedList;

/**
 * @author : LdLtd
 * @Date : 2023/7/11
 * @Description:两数相加
 * 输入：l1 = [2,4,3], l2 = [5,6,4]
 * 输出：[7,0,8]
 * 解释：342 + 465 = 807.
 * 示例 2：
 *
 * 输入：l1 = [0], l2 = [0]
 * 输出：[0]
 * 示例 3：
 *
 * 输入：l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
 * 输出：[8,9,9,9,0,0,0,1]
 */
public class add_two_numbers {

       static class ListNode {
         int val;
         ListNode next;
         ListNode() {}
         ListNode(int val) { this.val = val; }
         ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     }
    class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            //记录进位
            int t=0;
            //虚拟头结点
            ListNode p=new ListNode(-1);
            //结果节点
            ListNode res=p;
            while(l1!=null||l2!=null||t>0){
                if(l1!=null) {
                    t+=l1.val;
                    l1=l1.next;
                }
                if(l2!=null) {
                    t+=l2.val;
                    l2=l2.next;
                }
                res.next=new ListNode(t%10);
                t/=10;
                res=res.next;
            }
            // if(t!=0) {
            //     res.next.val=1;
            // }
            return p.next;
        }
    }

}
